package 高频题;

public class 最长回文子串_5 {
    public static void main(String[] args) {
        System.out.println(new 最长回文子串_5().longestPalindrome("babad"));
    }

    public String longestPalindrome(String s) {
        String res = "";
        for (int i = 0; i < s.length(); i++) {
            //寻找长度为奇数的回文子串
            String s1 = palindrome(s, i, i);
            //寻找长度为偶数的回文子串
            String s2 = palindrome(s, i, i + 1);

            //res=longgest(res,s1,s2)
            res = res.length() > s1.length() ? res : s1;
            res = res.length() > s2.length() ? res : s2;

        }
        return res;
    }

    //返回以s[l]和s[r]为中心的最长回文子串
    public String palindrome(String s, int l, int r) {
        while (l >= 0 && r < s.length() && s.charAt(l) == s.charAt(r)) {
            //从中间向两端扩散
            l--;
            r++;
        }


        //s.substring(l+1,r)：截取出来回文串，画个图一下就明白了
        return s.substring(l + 1, r);

    }
}
